╘HE PURPOSE OF THIS GAME IS TO CROSS OVER TO THE OPPOSITE SIDE BEFORE YOUR OPPONENT DOES. ╨LAYER ONE OWNS SQUARES NUMBERED 1 TO 4. ╘HEY ARE TO BE TRANSPORTED FROM THE BOTTOM OF THE BOARD TO THE TOP OF THE SCREEN. ╨LAYER TWO HAS SQUARES NUMBERED 5 TO 8. ╘HEY ARE TO BE MOVED FROM THE RIGHT SIDE WESTWARD, TO THE LEFT EDGE OF THE SCREEN. ╨LAYER ONE CAN ONLY MOVE UP OR SIDEWAYS. ╨LAYER TWO CAN ONLY MOVE LEFT OR UP AND DOWN. ┬UMPING INTO ANOTHER SQUARE ISN'T PERMITTED. ╚ERE IS AN ILLUSTRATION OF A TYPICAL BOARD, EARLY IN THE GAME:
// PIC: SQUARES //
╘HIS GAME APPEARED IN THE ╙├╔┼╬╘╔╞╔├ ┴═┼╥╔├┴╬ LONG AGO. ╔T IS A GOOD STRATEGY GAME, FAIRLY DIFFICULT ON A 5 X 5 BOARD. ╘HE COMPUTER'S FUNCTION IS TO BE A WATCHDOG: THE COMPUTER PRESENTS THE BOARD AND CHECKS ALL THE MOVES FOR LEGALITY. ╘HE COMPUTER PROMPTS THE USERS ON THE TOP TWO LINES OF THE SCREEN.
// PRG: SQUARES //
Ç*FP13
*** ╟┴═┼ ╠╧╟╔├ ╓┴╥╔┴┬╠┼╙: LINES 110-7060 ***
╨ PLAYER NUMBER
╨1,╨2 RANGE OF PLAYER'S SQUARES
╬┬() FLAGS NOT-BLOCKED POSITIONS
╬┬ COUNTS ABOVE
╙╤() NAMES OF THE SQUARES (┴,┬, ETC)
┴╬$ AVAILABLE NUMBERS (1-4, 5-8)
╧╦ FLAGS BEING ON THE EDGE, ╧╦ TO VANISH
┼╞ FLAGS END OF GAME
├╓() TABLE OF LEGAL MOVES
┌╓ SHOWS OFF-THE BOARD ROW (PLAYER 1) OR
COLUMN (PLAYER 2)
Ç*FP11
*** ╟╥┴╨╚╔├ ╓┴╥╔┴┬╠┼╙: LINES 8000 UP ***
╚$, ╠1$,╠2$ USED FOR POSITIONING THE DRAWING
OR THE INPUT PROMPTS
┬$ USED FOR BLANKING A SCREEN LINE
╥1,├1 INITIAL BOARD POSITION
╥$ IS SPACES FOR POSITIONING THE BOARD
┴$ WORKING VARIABLE FOR READING AND
PRINTING THE BOARD
├╓() ORIGINAL BOARD LETTERS, WITH PLAYER'S
NUMBERS SUPERIMPOSED AS NEEDED
*** ╔╬╙╘╥╒├╘╔╧╬╙ ***
╘YPE ╚╧═┼ AND 20 CURSOR-DOWN IN ╚$ IN LINE 8000. ╔N THE SAME LINE, ╠1$ CONTAINS ╚╧═┼ AND TWO DOWN, ╠2$ CONTAINS ╚╧═┼ AND THREE DOWN. ┬$ IS EXACTLY 39 SPACES LONG.
╬OW, THE BOARD. ╞OUR PIECES THAT MAKE UP THE BOARD ARE IN ─┴╘┴ LINES. ╨ROGRAM LINES 8040-8050 PRINT THE WHOLE THING SO THAT IT LOOKS AS IN THE ILLUSTRATION ABOVE. ─┴╘┴ LINES NEED ONLY PIECES. ╫HAT YOU TYPE IS NOT IMPORTANT TO THE FUNCTIONING OF A PROGRAM, BUT HERE IS THE LIST OF KEYS THAT WERE USED: ╙HIFTED + - ╒ ╔ ╩ ╦ AND ├OMMODORE-LOGO ╥ ┼ ╤ ╫. ┘OU CAN DESIGN YOUR OWN THING IF YOU WISH, SO LONG AS THERE ARE ONE COLUMN WIDE GAPS BETWEEN ALL LETTERS IN BOTH THE HORIZONTAL AND VERTICAL DIRECTION.
╥╒╬ THE PROGRAM. ╘HE COMPUTER PROMPTS YOU AT THE TOP OF THE SCREEN. ╘HE FIRST LINE IS IMPORTANT TO WATCH. ╘HE SECOND ONE IS ONLY USEFUL WHILE YOU ARE LEARNING THE GAME - IT REMINDS YOU WHICH ARE THE LEGAL MOVES. ┘OU CAN IGNORE THIS LINE ONCE YOU KNOW THE RULES.
╘O PLAY, FIRST SELECT THE NUMBER OF THE SQUARE YOU WISH MOVED, THEN PRESS THE LETTER OF THE DESTINATION FOR THAT MOVE. ╧NE EXCEPTION: WHEN YOU'RE READY TO GO OFF THE BOARD, TYPE ┌. ┘OU'LL VANISH AT THAT POINT. ╘HE WINNER IS DECLARED AS SOON AS ONLY ONE SQUARE REMAINS ON THE BOARD.
*** ─┼╘┴╔╠╙ ***
╘HERE ARE SEVERAL ╥┼═ARK LINES IN THE PROGRAM TO SHOW WHAT THE VARIOUS SECTIONS DO. ╘HE LOGIC IS THIS: ALL THE LETTER CELLS AND THE NUMBER-SQUARES ARE SET UP IN LINES 8030-8120. ┴LL THE AVAILABLE SQUARES AND POSITIONS ARE SQUIRRELED AWAY IN VARIABLES, AS THEY WILL BE NEEDED ALL ALONG: IMAGINE A SQUARE MOVING FROM ┼ TO ─. ┴S SOON AS ┼ IS VACATED BY NUMBER 5, A LETTER ┼ MUST REAPPEAR THERE, AND SO ON FOR ALL THE POSITIONS.
╫HEN A SQUARE IS TAKEN OFF THE BOARD, IT HAS TO BE REMOVED FROM THE LIST. ╫HEN A SQUARE IS TO MOVE, WE LOOK AROUND FOR LEGAL MOVES (3 AT MOST) OF WHICH SOME MAY BE ILLEGAL EDGES, OTHER SQUARES, OR BLOCKED SQUARES. ┴╬$ STRING KEEPS TRACK OF WHAT IS OR ISN'T LEGAL AT THE MOMENT.
╘HERE IS ONE TRICKY PART IN THE CODING. ├╚╥$(0) IS USED TO TEST POSITIONS OFF-THE-BOARD, AS WELL AS "CROSSING OFF" THE AVAILABLE SQUARE FROM THE LIST. ╔T'S CONVENIENT, IT DOESN'T PRINT, AND WE CAN TEST FOR ZERO. ╞OR AN EXAMPLE SEE LINES 210 AND 7050.
╘HE PLAY LOOP IS IN LINES 120-230, WITH SEVERAL SUBROUTINES IN LINES 5000-7060. ╘HE SUBROUTINES GET THE KEYBOARD INPUT (5000), CALCULATE IF A SQUARE MAY MOVE OFF THE BOARD (6000), LOOK AT THE SURROUNDINGS OF THE INTENDED MOVE (7000).
╘HE MAIN LOOP PROMPTS THE USER ABOUT HIS/HER SQUARE NUMBERS (140-160). ╘HE USER THEN PICKS ONE OF THOSE (170) AND IF THE INPUT IS NOT LEGAL WE GO BACK TO LINE 140. ╔F IT IS LEGAL, WE GET THE SECOND PROMPT, THE DESTINATION SQUARE. ╘HE USER'S INPUT IS TAKEN AND EXAMINED (200) AND IF NOT LEGAL, WE LOOP BACK TO LINE 200 AGAIN. ╔F LEGAL, WE MAY HAVE A "┌" CONDITION (GOING OFF THE BOARD) IN WHICH CASE WE SUBTRACT ONE FROM THE NUMBER OF PIECES AND REMOVE IT FROM THE LIST (210).
╘HE MOVE IS PRINTED, THE SQUARE IS REPLACED WITH A LETTER AND IF THERE ARE NO MORE TO DO, WE DECLARE A WINNER (240), OTHERWISE WE RECALCULATE THE POSITION FOR THE LATEST SQUARE AND LOOP BACK TO THE NEXT PLAYER.
╔F AT ANY TIME THE PLAYER'S CHOSEN SQUARE IS BLOCKED, THE GAME MOVES TO THE NEXT PLAYER, WHETHER HE HAS OTHER OPTIONS (LOOPBACK IN LINE 160) OR NOT (LOOPBACK, LINE 190). ╞AIR ENOUGH?
*** ╨╥╧╩┼├╘╙ ***
╘HOSE WHO THINK IT'S UNFAIR CAN RECODE, SO THAT THE PLAYERS CHANGE ONLY IF ALL THE SQUARES BELONGING TO ONE PLAYER ARE IMMOBILIZED BY A BLOCKADE. ┬UT IF THE PLAYER CAN POSSIBLY MOVE ANOTHER SQUARE, THE COMPUTER WILL DO THE NECESSARY HAND-HOLDING AND TELL THE PLAYER TO, ╨╠┼┴╙┼, TRY ANOTHER SQUARE.
┴LMOST ALL THE CODING NECESSARY FOR THE COMPUTER TO BE ONE OF THE PLAYERS IS IN PLACE. ╘HE ONLY NEW CODE REQUIRED IS STRATEGY. ╔NCLUDING THE STRATEGY IS NO TRIVIAL TASK, ENJOY THE CHALLENGE!